package cn.springsoter.core.sms.model.dto;

import cn.springsoter.core.sms.enums.CompanyEnum;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 短信模板消息
 * @author dws
 * @date 2022-09-07 16:30:00
 */
@Data
@NoArgsConstructor
@Accessors(chain=true)
public class SMSTemplateMessageDTO {
    /**
     * 手机号
     * 多个表示给所有号码发送相同内容，最多1000个
     */
    private List<String> phones;
    /**
     * 公司名称
     */
    private CompanyEnum company;
    /**
     * 模板id
     */
    private String templateId;
    /**
     * 模板占位变量，可为空。
     * key为第几个变量(从1开始)或占位变量，不同短信平台实现方式不一样
     * value为对应值
     */
    private Map<String, String> variables;
    /**
     * 定时发送时间
     * 可选，为{@code null}或早于当前时间则立即发送
     */
    private Date sendTime;
    /**
     * 回调地址前缀
     * 可选，为{@code null}时表示无回调
     */
    private String callbackUrlPre;

    public SMSTemplateMessageDTO(List<String> phones, CompanyEnum company, String templateId) {
        this.phones = phones;
        this.company = company;
        this.templateId = templateId;
    }

    public SMSTemplateMessageDTO(String phone, CompanyEnum company, String templateId) {
        this(Collections.singletonList(phone), company, templateId);
    }

    public SMSTemplateMessageDTO(List<String> phones, CompanyEnum company, String templateId, Map<String, String> variables) {
        this(phones, company, templateId);
        this.variables = variables;
    }
    public SMSTemplateMessageDTO(String phone, CompanyEnum company, String templateId, Map<String, String> variables) {
        this(phone, company, templateId);
        this.variables = variables;
    }
}
